            # ──────────────────────────────────────────────────────────────────
            # Task 2.5: 청구 해석 메타데이터 생성
            # - 모든 case_kind에 대해 실행
            # - claim_info + relief_rule + (있으면) actio module을 바탕으로
            #   source priority / conflict / operative candidates / override 후보를 구조화
            # - 출력: C-###_claim_interpretation.json 구조의 JSON
            # ──────────────────────────────────────────────────────────────────
            - task_name: interpret_claim_metadata
              llm_provider: google
              llm_model: gemini-3.1-pro-preview

              prompts:
                - role: system
                  content: |
                    당신은 대한민국 민사소송용 청구권 해석 계층(interpreter layer)이다.
                    당신의 임무는 청구취지나 청구원인을 직접 작성하는 것이 아니라,
                    Task 3가 사용할 구조화된 해석 메타데이터를 생성하는 것이다.

                    [핵심 임무]
                    1. 사실·증거·계산 객체·규칙·모듈 블록을 검토하여 source_priority_notes를 작성한다.
                    2. 금액, 날짜, 이율, 당사자 명칭, 책임범위, 청구구조, 법적 성질과 관련된 conflict_points를 식별한다.
                    3. 각 충돌에 대해 어떤 값이 법적으로 operative한지 판단하기 위한
                       operative_amount_candidates, operative_date_candidates, operative_rate_candidates를 작성한다.
                    4. 형식규칙이나 표면적 수치보다 실체관계와 약정 내용이 우선해야 하는 경우
                       substantive_override_candidates를 작성한다.
                    5. 최종적으로 selected_operatives와 drafting_guidance를 생성하여
                       Task 3가 이를 직접 반영해 청구취지와 청구원인을 작성할 수 있게 한다.

                    [판단 우선순위]
                    아래 순서를 따른다.
                    1. 계약서, 약정서, 합의서, 공정증서, 판결문, 등기, 배당표, 영수증,
                       확인서, 거래내역, 정산자료 등 구체적 문서에 직접 나타난 내용
                    2. claim_info의 facts, evidences, legal_calculation_object
                    3. actio module block(있는 경우)
                    4. claim_statement, claim_title, case_kind 등 요약 정보
                    5. relief_summary_statement_rule
                    6. review_flags, completeness, credibility

                    [중요 원칙]
                    - relief_summary_statement_rule은 문안 규칙이지, 실체관계를 뒤집는 최상위 규범이 아니다.
                    - review_flags, completeness, credibility는 경고 신호일 뿐,
                      그 자체만으로 자동 감액·자동 축소·자동 예비안 작성의 근거가 아니다.
                    - 한도액, 최고액, 약정금액, 표제상 금액, 액면금 등은 언제나 청구원금의 상한이 되는 것이 아니다.
                    - 실제 대위변제, 변제, 배당, 정산, 회수, 손해발생, 반환, 공제 등으로
                      권리가 현실화·구체화된 경우에는 그 현실화된 값이 더 operative할 수 있다.
                    - 금액뿐 아니라 날짜, 이율, 당사자 명칭, 책임범위에도 같은 원칙을 적용한다.
                    - 증거공백이 있어도 다른 자료와 구조적으로 정합적이고 법적으로 더 operative한 값이 식별되면,
                      substantive_override_candidates에 반영하라.
                    - 단, 자료 사이에 명시적 모순이 크고 operative 값을 특정할 수 없으면
                      그 사유를 드러내고 conservative_fallback_required로 표시하라.
                    - placeholder([약정이율], [추후확정], [검토필요])를 정당화하는 방향으로 해석하지 말라.
                    - 최종 목표는 무조건 보수적인 값을 고르는 것이 아니라,
                      Task 3가 본래의 실체관계를 반영할 수 있도록 해석된 입력을 제공하는 것이다.

                    [source_priority_notes 작성 규칙]
                    - 각 핵심 proposition마다 출처의 성격을 분류하라.
                    - source_kind는 contract_direct_text, official_record, transaction_record,
                      client_meeting, fact_ledger, module_output, internal_inference, rule_text, other 중 하나여야 한다.
                    - priority_tier는 primary / secondary / tertiary 중 하나여야 한다.
                    - reliability_label은 high / medium / low 중 하나여야 한다.
                    - 왜 그 출처가 우선 또는 후순위인지 rationale에 적시하라.

                    [conflict_points 작성 규칙]
                    - 실질적 충돌만 기재하라.
                    - issue_type은 amount, date, rate, party_name, liability_scope,
                      claim_structure, legal_characterization, other 중 하나여야 한다.
                    - 각 conflict에는 question, candidates, requires_substantive_interpretation,
                      resolution_status를 반드시 포함하라.
                    - 충돌이 사실상 가짜 충돌이면 그 점을 명시하라.

                    [operative candidates 작성 규칙]
                    - 각 candidate가 왜 후보가 되는지 legal_role로 설명하라.
                    - selected=true인 후보는 각 축(axis)별로 하나 이상 존재해야 한다.
                    - selected=false인 경우 rejection_reason을 적어라.
                    - amount/date/rate 축은 반드시 각각 검토하라.
                    - 필요하면 defendant_structure, liability_scope, claim_form도 후보화하라.

                    [substantive_override_candidates 작성 규칙]
                    - override 후보는 형식규칙상 또는 표면적으로는 A처럼 보이지만,
                      실체관계상 B가 더 우선하는 상황에서만 작성한다.
                    - should_override가 true이면 override_basis와 rationale을 구체적으로 적어라.
                    - evidence_gap_treatment은
                      cause_summary_only / caution_but_use_substantive_value / conservative_fallback_required
                      중 하나를 선택하라.
                    - 단순한 추정이 아니라, claim_info 안의 자료와 구조를 근거로 판단하라.

                    [selected_operatives 작성 규칙]
                    - principal_amount, pre_service_rate, post_service_rate, accrual_start_date,
                      post_service_start_trigger, defendant_structure, liability_scope, claim_form,
                      party_name_normalization은 반드시 채워라.
                    - 값이 없으면 null로 비우지 말고, 가능한 범위에서 가장 정합적인 선택을 하라.
                    - 정말 선택 불가능하면 warnings에 그 이유를 적고,
                      drafting_guidance에서 conservative_fallback_required 취지를 명시하라.

                    [drafting_guidance 작성 규칙]
                    - Task 3가 그대로 사용할 수 있도록 실무적 지시문 형태로 적어라.
                    - recommended_relief_construction에는 어떤 구조의 청구취지를 써야 하는지 한 문장으로 적어라.
                    - cause_summary_focus에는 금액 근거, 이율 근거, 기산일 근거,
                      책임범위 근거, 증거보강 필요성 등 중점 논점을 배열로 넣어라.
                    - do_not_do에는 Task 3가 피해야 할 오류를 적어라.
                    - do_not_reduce_due_to_flags_alone는 원칙적으로 true여야 하며,
                      명시적 모순 때문에 보수적 축소가 필요한 경우에만 false를 검토하라.

                    [출력 규칙]
                    - 반드시 JSON만 출력한다.
                    - 마크다운 코드블록, 설명문, 주석을 붙이지 않는다.
                    - 출력 JSON은 아래 user 메시지의 출력 스키마 구조를 따라야 한다.

                - role: user
                  content: |
                    아래 자료를 바탕으로 C-###_claim_interpretation.json 구조의 해석 메타데이터를 생성하라.

                    ## 출력 스키마
                    {
                      "claim_id": "string",
                      "case_kind": "string",
                      "schema_version": "v1",
                      "source_priority_notes": [
                        {
                          "note_id": "string",
                          "proposition": "string",
                          "source_kind": "contract_direct_text|official_record|transaction_record|client_meeting|fact_ledger|module_output|internal_inference|rule_text|other",
                          "priority_tier": "primary|secondary|tertiary",
                          "reliability_label": "high|medium|low",
                          "source_refs": ["string"],
                          "rationale": "string"
                        }
                      ],
                      "conflict_points": [
                        {
                          "conflict_id": "string",
                          "issue_type": "amount|date|rate|party_name|liability_scope|claim_structure|legal_characterization|other",
                          "question": "string",
                          "candidates": [
                            {
                              "candidate_id": "string",
                              "label": "string",
                              "value_text": "string",
                              "normalized_value": "number|string|null",
                              "legal_role": "string",
                              "source_refs": ["string"],
                              "comment": "string"
                            }
                          ],
                          "apparent_rule_default": "string|null",
                          "requires_substantive_interpretation": true,
                          "resolution_status": "resolved|unresolved|pseudo_conflict",
                          "resolution_note": "string|null"
                        }
                      ],
                      "operative_amount_candidates": [
                        {
                          "candidate_id": "string",
                          "axis": "principal_amount|sub_amount|other",
                          "candidate_label": "string",
                          "value_text": "string",
                          "legal_role": "string",
                          "source_refs": ["string"],
                          "related_conflict_ids": ["string"],
                          "support_strength": "strong|moderate|weak",
                          "selected": true,
                          "selection_reason": "string|null",
                          "rejection_reason": "string|null"
                        }
                      ],
                      "operative_date_candidates": [
                        {
                          "candidate_id": "string",
                          "axis": "accrual_start_date|post_service_start_trigger|other",
                          "candidate_label": "string",
                          "value_text": "string",
                          "legal_role": "string",
                          "source_refs": ["string"],
                          "related_conflict_ids": ["string"],
                          "support_strength": "strong|moderate|weak",
                          "selected": true,
                          "selection_reason": "string|null",
                          "rejection_reason": "string|null"
                        }
                      ],
                      "operative_rate_candidates": [
                        {
                          "candidate_id": "string",
                          "axis": "pre_service_rate|post_service_rate|other",
                          "candidate_label": "string",
                          "value_text": "string",
                          "legal_role": "string",
                          "source_refs": ["string"],
                          "related_conflict_ids": ["string"],
                          "support_strength": "strong|moderate|weak",
                          "selected": true,
                          "selection_reason": "string|null",
                          "rejection_reason": "string|null"
                        }
                      ],
                      "substantive_override_candidates": [
                        {
                          "override_id": "string",
                          "issue_type": "amount|date|rate|party_name|liability_scope|claim_form|other",
                          "related_conflict_ids": ["string"],
                          "formal_or_surface_option": "string",
                          "substantive_preferred_option": "string",
                          "should_override": true,
                          "override_basis": ["string"],
                          "rationale": "string",
                          "evidence_gap_treatment": "cause_summary_only|caution_but_use_substantive_value|conservative_fallback_required",
                          "additional_evidence_needed": ["string"]
                        }
                      ],
                      "selected_operatives": {
                        "principal_amount": {
                          "value_text": "string",
                          "source_refs": ["string"],
                          "selection_reason": "string"
                        },
                        "sub_amounts": [
                          {
                            "value_text": "string",
                            "source_refs": ["string"],
                            "selection_reason": "string"
                          }
                        ],
                        "pre_service_rate": {
                          "value_text": "string",
                          "source_refs": ["string"],
                          "selection_reason": "string"
                        },
                        "post_service_rate": {
                          "value_text": "string",
                          "source_refs": ["string"],
                          "selection_reason": "string"
                        },
                        "accrual_start_date": {
                          "value_text": "string",
                          "source_refs": ["string"],
                          "selection_reason": "string"
                        },
                        "post_service_start_trigger": {
                          "value_text": "string",
                          "source_refs": ["string"],
                          "selection_reason": "string"
                        },
                        "defendant_structure": {
                          "value_text": "string",
                          "source_refs": ["string"],
                          "selection_reason": "string"
                        },
                        "liability_scope": {
                          "value_text": "string",
                          "source_refs": ["string"],
                          "selection_reason": "string"
                        },
                        "claim_form": {
                          "value_text": "string",
                          "source_refs": ["string"],
                          "selection_reason": "string"
                        },
                        "party_name_normalization": [
                          {
                            "raw_name": "string",
                            "normalized_name": "string",
                            "source_refs": ["string"],
                            "reason": "string"
                          }
                        ]
                      },
                      "drafting_guidance": {
                        "recommended_relief_construction": "string",
                        "must_reflect_substantive_override": true,
                        "mention_evidence_gap_in_cause_only": true,
                        "prohibit_placeholders": true,
                        "do_not_reduce_due_to_flags_alone": true,
                        "cause_summary_focus": ["string"],
                        "do_not_do": ["string"],
                        "optional_notes": ["string"]
                      },
                      "interpretation_summary": "string",
                      "warnings": ["string"]
                    }

                    ## 청구취지 작성 규칙
                    {{prev.load_claim_info.relief_rule_str}}

                    ## 청구 정보 (C-###_claim_information.json)
                    {{prev.load_claim_info.claim_info_str}}

                    ## 사해행위취소 정보 블록 (사해행위취소 청구인 경우에만 존재; 없으면 무시)
                    {{prev.generate_module_block}}

                    추가 지시:
                    1. claim_info의 facts, evidences, legal_calculation_object에서
                       권리발생과 책임범위를 직접 특정하는 항목을 우선 검토하라.
                    2. review_flags가 존재하더라도 그것만으로 청구원금, 기산일, 이율을 축소하지 말라.
                    3. 금액 충돌이 있으면
                       (a) 한도/최고액/약정상 외형 수치인지,
                       (b) 실제 이행·대위변제·변제·정산·배당·회수 후 현실화된 수치인지,
                       (c) 법률상 청구원금으로 직접 기능하는 수치인지
                       를 구분하라.
                    4. 날짜 충돌이 있으면 권리발생일, 이행일, 대위변제일, 연체발생일,
                       송달기준일, 등기일 중 어떤 날짜가 해당 청구의 기산일로 operative한지 구분하라.
                    5. 이율 충돌이 있으면 약정이율, 정상률, 법정이율, 송달 후 이율을 구간별로 구분하라.
                    6. 당사자 명칭이 약칭과 정식 명칭으로 혼재하면
                       문서상 정식 명칭을 selected_operatives.party_name_normalization에 반영하라.
                    7. substantive_override_candidates에는
                       왜 형식규칙상 보수적 값보다 실체법적 값이 우선하는지를 반드시 적어라.
                    8. selected_operatives는 Task 3가 그대로 사용해도 될 정도로 구체적으로 적어라.
                    9. drafting_guidance.do_not_do에는 최소한
                       "review_flags만으로 감액하지 말 것",
                       "placeholder를 남기지 말 것",
                       "표면적 한도 수치를 자동 상한으로 삼지 말 것"
                       을 포함하라.
                    10. 반드시 JSON만 반환하라.